package com.example.entity;

import com.example.mybatis.entity.BaseDateEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.*;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 原材料配置表
 *
 * @author yyyyjinying 1020066395@qq.com
 * @since 1.0-SNAPSHOT 2025-04-29
 */
@Data
@EqualsAndHashCode(callSuper = false) // 在比较两个对象是否相等时，只比较当前类的属性，不考虑父类的属性；在生成哈希码时，也只基于当前类的属性
@TableName("zy_raw_materials_config")
public class RawMaterialsConfigEntity extends BaseDateEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 原材料配置的唯一标识符
     */
    @TableId
    private Long configId;
    /**
     * 菜品ID，关联到菜单表中的菜品
     */
    private Long dishId;
    /**
     * 原材料名称
     */
    private String materialName;
    /**
     * 原材料的规格，使用JSON格式存储
     */
    private Object materialSpecification;
    /**
     * 计量单位，如克、升、件等
     */
    private String unitOfMeasure;
    /**
     * 每单位菜品所需的原材料数量
     */
    private BigDecimal quantity;
    /**
     * 供应商ID，关联到供应商表
     */
    private Long supplierId;
    /**
     * 原材料应满足的质量标准
     */
    private String qualityStandard;
    /**
     * 原材料的单价
     */
    private BigDecimal costPerUnit;
    /**
     * 原材料的总成本，基于数量和单价计算得出
     */
    private BigDecimal totalCost;
    /**
     * 可替代的原材料列表，使用JSON格式存储
     */
    private Object alternativeMaterials;
    /**
     * 原材料的有效期或保质期
     */
    private Date expirationDate;
    /**
     * 关于原材料的任何附加说明或备注
     */
    private String notes;
    /**
     * 是否删除：1， 0
     */
    private Integer isDelete;
}